//
//  KLSdk.h
//  WebRTCDemo_iOS
//
//  Created by szblsx2 on 2020/3/5.
//  Copyright © 2020 szblsx2. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <WebRTC/WebRTC.h>

NS_ASSUME_NONNULL_BEGIN

//事件码
#define SOCKET_EVENT        1000 //信令连接事件
#define ICE_EVENT           1001 //ICE连接事件
#define PEER_EVENT          1002 //Peer连接事件
#define MEET_CREATE         2000 //创建会议
#define MEET_JOIN           2001 //加入会议
#define MEET_LEAVE          2002 //离开会议
#define MEET_PUBLISH        2003 //推流
#define MEET_UNPUBLISH      2004 //取消推流
#define MEET_SUBSCRIBE      2005 //订阅流
#define MEET_UNSUBSCRIBE    2006 //取消订阅流
#define MEET_ICECANDIDATA   2007 //发送ICE
#define MEET_PEER_JOIN      3000 //有人加入
#define MEET_PEER_LEAVE     3001 //有人离开
#define MEET_STREAM_ADD     3002 //有流加入
#define MEET_STREAM_REMOVE  3003 //有流移除
//状态码
#define CODE_OK             200  //成功
#define CODE_FAIL           201  //失败

@interface KLSdk : NSObject

+ (instancetype)shared;

/**
*  初始化SDK
*  @param server 信令服务器地址
*  @param port     端口号
*  @param name 用户名
*/
- (void)initSDKWithServer:(NSString *)server port:(NSString *)port name:(NSString *)name;

/**
*  设置turn转发服务器地址 如不设置则为默认地址
*  @param iceServers  服务器地址
*/
- (void)setupIceServers:(NSArray<RTCIceServer *> *)iceServers;

/**
*  设置视频渲染窗口
*  @param videoRenderer  视频渲染窗口
*/
- (void)setupVideoRenderer:(UICollectionView *)videoRenderer;

/**
*  创建会议
*  @param roomId 房间id
*/
- (void)createMeetingWithRoomId:(NSString *)roomId;

/**
*  加入会议
*  @param roomId 房间id
*/
- (void)joinMeetingWithRoomId:(NSString *)roomId;

/**
*  离开会议
*/
- (void)leaveMeeting;

/**
*  是否打开摄像头 默认开启
*  @param open 是否开启
*/
- (void)turnOnCamera:(BOOL)open;

/**
*  切换前后置摄像头 默认前置
*/
- (void)switchCamera;

/**
*  是否打开麦克风 默认开启
*  @param open 是否开启
*/
- (void)turnOnMicrophone:(BOOL)open;

/**
*  是否开启扬声器
*  @param open 默认开启
*/
- (void)whetherToOpenLoudspeaker:(BOOL)open;

/**
*  SDK事件处理
*  @param callBack 回调block  respone: 响应
*/
- (void)onEventHandleCallBack:(void(^)(NSDictionary *response))callBack;


- (void)test1;

@end

NS_ASSUME_NONNULL_END
